When a user remotely accesses an application configured for mouse-and-keyboard based commands, the user may control a particular server machine remotely from his or her computing device. This type of interaction is commonly referred to as an application “remoting” session. During an application remoting session, the user may interact with an application that is run as a process on the server machine, with its input and output remotely provisioned to the user.
Although traditional application remoting allows applications to be run in servers where the client computing devices have limited hardware capabilities, such application remoting has less to offer where client devices have greater hardware capabilities. In addition, the dedicated server (or servers) running the remoted applications typically provides application remoting to many client devices. As a result, the server can become a bottleneck on a datacenter's network resources and computing power. Moreover, traditional interfaces for application remoting with a dedicated server tend to be cumbersome and to require centralized information technology (IT) control and assistance.
Traditional application remoting allows a server to host a variety of applications which clients access through application remoting, but such application remoting does not permit an application to be shared between client devices. For example, a user who wishes to collaborate with another user on a document accessible via a particular application will need to either send the document to the other user's computing device and ensure that the application is installed in that device, create a remote desktop session that provides a window with the user's entire desktop rather than just the needed application and requires the user to be technically savvy, or set up a meeting (e.g., a WebEx™ meeting) which also requires technical skill and time to set up the meeting.